<html xmlns:v><head><style>v\:*{behavior:url(#default#vml)}</style></head><body>
<div style="width:400px;height:400px;border:solid 1px;" id="contain">
<v:line/><v:line/><v:line/><v:line/>
<v:line/><v:line/><v:line/><v:line/><v:line/><v:line/><v:line/><v:line/>
<v:line strokeweight="2" strokecolor="blue" from="200,200" to="250,200"><v:stroke endarrow="block"/></v:line>
<v:line strokeweight="2" strokecolor="blue" from="200,200" to="200,150"><v:stroke endarrow="block"/></v:line>

</div>
<script>
var starx=150;var stary=150;var round=100;var thita=Math.PI/16;var d=3;
mylin=contain.childNodes;




function point(x,y,z){
	this.x=x;
	this.y=y;
	this.z=z;
}

p=new Array();
p[0]=new point(1,1,1);
p[1]=new point(-1,1,1);
p[2]=new point(-1,-1,1);
p[3]=new point(1,-1,1);
p[4]=new point(1,1,-1);
p[5]=new point(-1,1,-1);
p[6]=new point(-1,-1,-1);
p[7]=new point(1,-1,-1);

function lin(pindxf,pindxt){
	this.from=pindxf;
	this.to  =pindxt;
}
l=new Array();
l[0]=new lin(p[0],p[1]);
l[1]=new lin(p[1],p[2]);
l[2]=new lin(p[2],p[3]);
l[3]=new lin(p[3],p[0]);
l[4]=new lin(p[0],p[4]);
l[5]=new lin(p[1],p[5]);
l[6]=new lin(p[2],p[6]);
l[7]=new lin(p[3],p[7]);
l[8]=new lin(p[4],p[5]);
l[9]=new lin(p[5],p[6]);
l[10]=new lin(p[6],p[7]);
l[11]=new lin(p[7],p[4]);

function myturn(){
for(i=0;i<p.length;i++){
tx=Math.cos(thita)*p[i].x-Math.sin(thita)*p[i].y;
ty=Math.cos(thita)*p[i].y+Math.sin(thita)*p[i].x;
p[i].x=tx;
p[i].y=ty;
}
}
function projecx(p){
	return p.x/(d-p.y)*round+starx;
}
function projecy(p){
	return p.z/(d-p.y)*round+stary;
}
function myfresh(){
for(i=0;i<l.length;i++)
{
mylin[i].from.x=projecx(l[i].from)
mylin[i].from.y=projecy(l[i].from)
mylin[i].to.x=projecx(l[i].to);
mylin[i].to.y=projecy(l[i].to);
}
}
function myinterval(){
myturn();
myfresh();
}
setInterval("myinterval();",100);
</script>

</body></html>